iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
Software Development

從零開始!使用chatGPT製作Unity回合制卡牌遊戲系列 第 17

從零開始!使用chatGPT製作Unity回合制卡牌遊戲 Day 17 - Unity的按鈕組成與「Button」屬性

  • 分享至 

  • xImage
  •  

在上一期,我們製作了介面需要的顯示文字,並解決的許多UI-TextMeshPro使用中文會出現的問題。
這次,我們將要來製作能使介面發生改變的按鈕以及對應程式碼。

什麼是按鈕?

在Unity中,其實按鈕很簡單。
我們先看實例。
在Hierarchy面板右鍵,選擇UI,Button-TextMeshPro。
https://ithelp.ithome.com.tw/upload/images/20231001/20163235HN9HJ3BhWH.png

會發現,在Button這個遊戲物件下,有一個TextMeshPro的子物件。
而這個TextMeshPro就和我們之前說過的TextMeshPro是一樣的。

那這個Button到底特別在哪?
我們看看他的屬性介面。
https://ithelp.ithome.com.tw/upload/images/20231001/20163235TCYVMxl9uz.png

其實按鈕最獨特的就在這個Button屬性。
各種Transition來對應不同按鈕出現的互動方式,還有各種Navigation。
在這邊,最重要的就是按鈕最初的功能,點擊它。


On Click();

這是一個怎麼樣的函式呢?
簡單來說,你用它,他就會觸發。
你按他,他就會跑起來。

太棒了。很好!
可是他說List is empty是什麼意思?

很簡單,清單是空白的。
按他,他會觸發清單中的每一項。
但是清單是空白的。

那該怎麼加入清單?
按下右下角的+號,他就會一切就緒了。

https://ithelp.ithome.com.tw/upload/images/20231001/20163235iJ3ONEty9k.png

我已經新增兩個項目了。
等等,為什麼我第一個已經有東西了?
不是應該和第二個一樣是None嗎?

沒錯,在完全沒有設定的情況下,他會觸發一個你新增的項目。
但是那個項目依舊是空的。但是這時的介面我們已經很熟悉了。
他需要被放入一個GameObject。

我們使用之前新增過的Logic檔案。
Logic裡有包含了我們之前使用過的GameStateManager。
我們創造一個函式,讓這個函式每被觸發一次,就順序改變遊戲模式。

public void SequentialChangeGameState()
    {
        switch (currentState)
        {
            case GameState.MainMenu:
                currentState = GameState.SelectGameMode;
                // Handle logic for the main menu state
                break;
            case GameState.SelectGameMode:
                currentState = GameState.Playing;
                // Handle logic for the selecting game mode state
                break;
            case GameState.Playing:
                currentState = GameState.GameOver;
                // Handle logic for the playing state
                break;
            case GameState.GameOver:
                currentState = GameState.MainMenu;
                // Handle logic for the game over state
                break;
                // Add more cases as needed
        }
    }

編輯後記得儲存。
這樣我們的按鈕就可以一直改變遊戲模式來供測試了!


我們回到Unity編輯界面。
在Button的On Click()更改None為Logic。
https://ithelp.ithome.com.tw/upload/images/20231001/20163235t2kdHr4N6X.png

然後在後面的Function選擇我們GameStateManager類別中,SequentialChangeGameState函式。
然後直接開始遊戲。
https://ithelp.ithome.com.tw/upload/images/20231001/20163235MBmIfu9ok9.png

https://ithelp.ithome.com.tw/upload/images/20231001/20163235uhcS10mWq0.png

可以看到在Logic內的CurrentState變數一直改變。

我們成功達成按鈕了!!


噎。但是介面文字還是沒有改變啊。
那是要留給之後的,別急啊!


上一篇
從零開始!使用chatGPT製作Unity回合制卡牌遊戲 Day 16 - Font Asset Creator:字元編碼與字元集Character Set
下一篇
從零開始!使用chatGPT製作Unity回合制卡牌遊戲 Day 18 - 使用按鈕改變TextMeshPro文字內容
系列文
從零開始!使用chatGPT製作Unity回合制卡牌遊戲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言